{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Market:\n",
    "    def __init__(self, a_d, b_d, a_z, b_z, tax):\n",
    "        self.a_d = a_d\n",
    "        self.b_d = b_d\n",
    "        self.a_z = a_z\n",
    "        self.b_z = b_z\n",
    "        self.tax = tax\n",
    "        self.eprice = 0\n",
    "        self.equantity = 0\n",
    "        \n",
    "    def price(self):\n",
    "        '''\n",
    "        The equilibrium price of the market.\n",
    "        '''\n",
    "        self.eprice = (self.a_d - self.a_z + self.b_z * self.tax) / (self.b_z + self.b_d)\n",
    "        return self.eprice\n",
    "    \n",
    "    def quantity(self):\n",
    "        '''\n",
    "        The equilibrium quantity of the market.\n",
    "        '''\n",
    "        self.equantity = self.a_d - self.b_d * (self.a_d - self.a_z + self.b_z * self.tax) / (self.b_z + self.b_d)\n",
    "        return self.equantity\n",
    "    \n",
    "    def tax_revenue(self):\n",
    "        '''\n",
    "        Total tax revenue extracted from the market.\n",
    "        '''\n",
    "        return self.tax * self.equantity \n",
    "        # 问题是，如果不执行free_m.quantity, 就不会有self.equantity这个值，那这里就算不对。\n",
    "        # 怎么改？\n",
    "    \n",
    "    def consumer_surplus(self):\n",
    "        '''\n",
    "        The consumer surplus of the equilibrium market.\n",
    "        '''\n",
    "        import scipy.integrate\n",
    "        f = lambda q: (self.a_d - q) / self.b_d - self.eprice\n",
    "        cs = scipy.integrate.quad(f, 0, self.equantity) \n",
    "        # 问题是，如果不执行free_m.quantity, 就不会有self.equantity这个值，那这里就算不对。\n",
    "        # 以及，这里的cs是一个tuple，而要求的是一个number。\n",
    "        return cs\n",
    "    \n",
    "    def producer_surplus(self):\n",
    "        '''\n",
    "        The producer surplus of the equilibrium market.\n",
    "        '''\n",
    "        import scipy.integrate\n",
    "        g = lambda q:self.eprice - (q - self.a_z + self.b_z * self.tax) / self.b_z\n",
    "        ps = scipy.integrate.quad(g, 0, self.equantity)\n",
    "        # 问题是，如果不执行free_m.quantity, 就不会有self.equantity这个值，那这里就算不对。\n",
    "        return ps\n",
    "    \n",
    "    def demand(self, *args):\n",
    "        '''\n",
    "        The demand of goods at a given price.\n",
    "        \n",
    "        Parameters:\n",
    "            p: the input price.\n",
    "            \n",
    "        Return:\n",
    "            demand: the demand of goods.\n",
    "        '''\n",
    "        # assert(isinstance(args, (int, float))),'Price should be numbers!'\n",
    "        d = [self.a_d - self.b_d * p for p in args]\n",
    "        return d\n",
    "    \n",
    "    def supply(self, *args):\n",
    "        '''\n",
    "        The supply of goods at a given price.\n",
    "        \n",
    "        Parameters:\n",
    "            p: the input price.\n",
    "            \n",
    "        Return:\n",
    "            supply: the supply of goods.\n",
    "        '''\n",
    "        # assert(isinstance(p, (int, float))),'Price should be numbers!'\n",
    "        s = [self.a_z + self.b_z * (p - self.tax) for p in args]\n",
    "        return s\n",
    "    \n",
    "    def supply_no_tax(self, *args):\n",
    "        '''\n",
    "        The supply of goods at a given price without tax\n",
    "        \n",
    "        Parameters:\n",
    "            p: the input price.\n",
    "            \n",
    "        Return:\n",
    "            supply: the supply of goods without tax\n",
    "        '''\n",
    "        # assert(isinstance(p, (int, float))),'Price should be numbers!'\n",
    "        s_n = [self.a_z + self.b_z * p for p in args]\n",
    "        return s_n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "free_m = Market(a_d = 15, b_d = 0.5, a_z = -2, b_z = 0.5, tax = 3)\n",
    "\n",
    "# 这里还可以这么写：\n",
    "# baseline_params = 15, .5, -2, .5, 3\n",
    "# free_m = Market(*baseline_params)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[10.0, 9.5, 9.0]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "free_m.demand(10, 11, 12)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#### 宝贝，经济里纵轴不是价格嘛？横轴是数量？ ####\n",
    "\n",
    "price = np.arange(0, 31, 1)\n",
    "#plt.plot(price, np.asarray(free_m.demand(price)))\n",
    "plt.plot(price, np.asarray(free_m.demand(price)).flatten(), color='c' )\n",
    "# 这里也可以用np.array(free_m.demand(price))，我其实不知道np.array和np.asarray的区别\n",
    "plt.plot(price, np.asarray(free_m.supply(price)).flatten(), color='m' )\n",
    "plt.plot(price, np.asarray(free_m.supply_no_tax(price)).flatten(), color='b' )\n",
    "plt.xlabel('Price')\n",
    "plt.ylabel('Quantity')\n",
    "plt.ylim(0, 16)\n",
    "plt.tick_params(direction='in')\n",
    "plt.legend(['Demand', 'Supply', 'Supply without tax'])\n",
    "# 这样其实不知道哪个对应的是哪个，可以像我下面这样，用label写\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(6, 4))\n",
    "\n",
    "price = np.arange(0, 31, 1)\n",
    "\n",
    "plt.plot(np.asarray(free_m.demand(price)).flatten(), price,\n",
    "         color='orange', label='Demand')\n",
    "\n",
    "plt.plot(np.asarray(free_m.supply(price)).flatten(), price, \n",
    "         color='steelblue', label='Supply')\n",
    "\n",
    "plt.plot(np.asarray(free_m.supply_no_tax(price)).flatten(), price,\n",
    "         color='steelblue', label='Supply without tax', linestyle='--')\n",
    "\n",
    "plt.xlabel('Price')\n",
    "plt.ylabel('Quantity')\n",
    "\n",
    "#plt.ylim(0, 16)\n",
    "plt.tick_params(direction='in')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
